package com.orange.core.pojo.entity.merchant;

import cn.hutool.core.date.DatePattern;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.orange.core.pojo.entity.IIntIdModel;
import com.orange.core.pojo.entity.IOperatorModel;
import com.orange.core.util.Constants;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;

/**
 * <p>ClassName:Merchant</p>
 * <p>Description: 商家信息</p>
 * <p>Author: lwm</p>
 * <p>Date: 2025/5/22 14:37</p>
 */
@Data
@Accessors(chain = true)
@TableName(value = "merchant", autoResultMap = true)
public class Merchant implements IIntIdModel<Merchant>, IOperatorModel<Merchant> {



    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 商家名称
     */
    private String name;

    /**
     * 商家标题
     */
    private String title;

    /**
     * 商家图片URL
     */
    private String imageUrl;

    /**
     * 商家地址
     */
    private String address;

    /**
     * 商家电话
     */
    private String phone;

    /**
     * 商家基本介绍
     */
    private String description;

    /**
     * 商家评分
     */
    private BigDecimal rating;

    /**
     * 商家评论数
     */
//    private Integer reviewCount;

    /**
     * 商家评分文字
     */
//    private String ratingText;

    /**
     * 营业开始时间
     */
    @JsonFormat(pattern = DatePattern.NORM_TIME_PATTERN)
    private LocalTime startTime;

    /**
     * 营业结束时间
     */
    @JsonFormat(pattern = DatePattern.NORM_TIME_PATTERN)
    private LocalTime endTime;

    /**
     * 商家标签（JSON数组）
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> tags;

    /**
     * 商家轮播图（JSON数组）
     */
    @TableField(value = "carousel_images", typeHandler = JacksonTypeHandler.class)
    private List<String> carouselImages;


    @JsonFormat(pattern = Constants.DEFAULT_DATE_FORMAT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT)
    private Integer createBy;

    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateBy;
}
